// 封装axios请求
import axios from 'axios';
import { ElMessage } from 'element-plus';
import { getToken } from '../utils/index'; // 导入获取token的函数

const request = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000', // 基础URL，可根据环境变量配置
  method: 'GET', // 默认请求方法
  params: {}, // 默认请求参数
  data: {}, // 默认请求体数据
  timeoutErrorMessage: '请求超时，请稍后再试', // 请求超时 错误信息
  headers: {
    'Content-Type': 'application/json;charset=UTF-8', // 设置请求头
  },

  timeout: 1000 * 10, // 请求超时时间，单位为毫秒
});

// 请求拦截器
request.interceptors.request.use(
  config => {
    const token = getToken();
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    ElMessage({
      message: '请求错误，请稍后再试',
      type: 'error',
    });
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  response => {
    const { data } = response;
    if (data.code !== 200) {
      ElMessage({
        message: data.message || '请求失败，请稍后再试',
        type: 'error',
      });
      return Promise.reject(new Error(data.message || '请求失败'));
    }
    return data;
  },
  error => {
    ElMessage({
      message: error.response?.data?.message || '网络错误，请稍后再试',
      type: 'error',
    });
    return Promise.reject(error);
  }
);
export default request;
